<?php


class CreateController extends Controller
{
	public function filters()
    {
                return array(
                        'accessControl', // perform access control for CRUD operations
                );
    }
	public function accessRules()
	{
		return array(
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('index','save','delete','hire'
					,'accepted','update','upgrade','ajaxdropdown','ajaxcurrency'
					,'ajaxskill','mail','bidaccepted','notbid','contract'
					,'accept','deposit','bidend','endjob','ajaxendjob'),
				'users'=>array('@'),
			),
			array('allow',
				'actions' => array('cronjob','view'),
				'users'=>array('*'),
				),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}
	public function actionDelete()
	{
		if (isset(Yii::app()->session['idbid']) && Yii::app()->request->isAjaxRequest){
			$idbid =Yii::app()->session['idbid'];
			$model = Job::model()->findByPk($idbid);
			$model->delete();
			$criteria=new CDbCriteria;
			$criteria->condition = "job_id=$idbid";
			BidJob::model()->deleteAll($criteria);
			Comment::model()->deleteAll($criteria);
			$data = Job::model()->findAll("user_id=:id", array(':id'=>Yii::app()->user->id));
			$this->renderPartial('updatedelete',array('data'=>$data));
		}
	}

	public function actionView($id){
		$comment = new Comment;
		$model = JobCreate::model()->findByPk($id);
		if ($model != null){
				$this->render('view',array('model'=> $model, 'comment'=>$comment));
		}else{
 			$da ="Bạn vào không đúng";
 			$this->render('application.views.site.error',array('data'=>$da));
			}
	}
	public function actionHire($id)
        {
        	echo Yii::app()->user->id;
               if ($id == Yii::app()->user->id) {
               		$da ="Bạn vào không đúng";
		 			$this->render('application.views.site.error',array('data'=>$da));		
               }else{
               		$myjob = Job::model()->findAll("user_id=:id", array(':id'=>Yii::app()->user->id));
	                $model = new BidJobCreate;
	                if(isset($_POST['BidJobCreate']))
					{
						if ($_POST["job_id"] == "") {
							Yii::app()->user->setFlash('not_job_id','Bạn chưa chọn dự án');
						}
							$model->attributes=$_POST['BidJobCreate'];
				            $model->user_id = $id;
				            $model->job_id = $_POST["job_id"];
				            $model->status =1;
				            $model->currency_id= $_POST['currency_id'];
				            $model->checkPoint="0";
				            $job = Job::model()->findByPk($model->job_id);
							if($model->save()){
				                 $desc = $_POST['BidJobCreate']["desc"];
				                 $ten = Yii::app()->user->name;
				                 $iduser = $job->user->id;
				                 $str="$ten da yeu cau tham gia du an $job->name cua ban voi loi nhan $desc";
							     Yii::app()->getModule('job')->createInboxmessage($id,0,'Bạn nhận được một tin nhắn',$str);	
							     $this->redirect(array('create/view','id'=>$model->job_id));
							}
				
					}
	                $this->render('hire',array('model'=>$model,'myjob'=>$myjob));   
               }
        }
	public function actionUpdate($id)
	{
		$model = Job::model()->findByPk($id);
		if ($model != null){
			if ($model->user_id != Yii::app()->user->id) {
				$da ="Bạn vào không đúng";
		 		$this->render('application.views.site.error',array('data'=>$da));
			}else{
				if(isset($_POST["Job"])){
					$model->attributes = $_POST['Job'];
					if($model->save()){
						JobModule::setStatusJob($new,-1,$id);
						JobModule::createUserlogs('tbl_job',$id,3);
						$this->redirect(array('view','id'=>$id));
					}
			}
			$this->render('update',array('model'=>$model));
		}
		}else{
			$da ="Bạn vào không đúng";
		 	$this->render('application.views.site.error',array('data'=>$da));
		}
	}

	public function actionUpgrade($id)
	{
		$model = JobCreate::model()->findByPk($id);
		if ($model != null){
			if ($model->user_id != Yii::app()->user->id) {
				$da ="Bạn vào không đúng";
		 		$this->render('application.views.site.error',array('data'=>$da));
			}else{
				if(isset($_POST["Job"])){
					$model->attributes = $_POST['Job'];
					$timeend = $_POST["timeend"];
					$model->statustime = $timeend;
					$now = date("Y-m-d H:i:s");
					switch ($timeend) {
						case 0:
							$new = strtotime("+1 week" , strtotime($now));
							$new = date("Y-m-d H:i:s",$new);
							break;

						case 1:
							$new = strtotime("+4 week" , strtotime($now));
							$new = date("Y-m-d H:i:s",$new);
							break;

						case 2:
							$new = strtotime("+3 month" , strtotime($now));
							$new = date("Y-m-d H:i:s",$new);
							break;
						default:
							# code...
							break;
					}
					$model->status=0;
					$model->timepost =$now;
					JobModule::setDropEventJob($model->timeend);
					$model->timeend= $new;
					if($model->save()){
						JobModule::setStatusJob($new,-1,$id);
						UserLogs::saveLogsUser('tbl_job',$id,0,4);
						$this->redirect(array('view','id'=>$id));
					}
				}
			$this->render('upgrade',array('model'=>$model));
			}
		}
		
	}

	public function actionIndex()
	{
		ob_start();
		$exist = UserProfiles::model()->exists("user_id = :x", array(':x'=>Yii::app()->user->id));
		if ($exist == 1) {
			
		$model = new JobCreate();
		$this->performAjaxValidation($model);
		if(isset($_POST['JobCreate']))
		{
			$model->attributes=$_POST['JobCreate'];
			$model->subjobtype_id = $_POST['subjobtype_id'];
			$model->user_id = Yii::app()->user->id;
			$model->fileattached = CUploadedFile::getInstance($model, 'fileattached');
			$timeend = $_POST["timeend"];
			$now = date("Y-m-d H:i:s");
			$model->statustime = $timeend;
			$model->timecontract =new CDbExpression('NOW()');
			switch ($timeend) {
				case 0:
					$new = strtotime("+1 week" , strtotime($now));
					$new = date("Y-m-d H:i:s",$new);
					break;

				case 1:
			$new = strtotime("+4 week" , strtotime($now));
					$new = date("Y-m-d H:i:s",$new);
					break;

				case 2:
					$new = strtotime("+3 month" , strtotime($now));
					$new = date("Y-m-d H:i:s",$new);
					break;
				default:
					# code...
					break;
			}
			$model->timeend = $new;
			if($model->save()){
					$path = Yii::getPathOfAlias('webroot').'/data/file/';
					 if ( $_POST['JobCreate']["fileattached"] != "" ){
							$model->fileattached->saveAs($path.$model->fileattached);
					 }
					 if (isset($_POST['job_checkbox'])){
							foreach ($_POST['job_checkbox'] as $value){
									$sql="INSERT INTO tbl_job_skill (job_id, skill_id) VALUES(:job_id, :skill_id)";
									$command = Yii::app()->db->createCommand($sql);
									$command->bindParam(":job_id",$model->id,PDO::PARAM_INT);
									$command->bindParam(":skill_id",$value,PDO::PARAM_INT);
									$command->execute();
							}
					}
					UserLogs::saveLogsUser('tbl_job',$model->id,0,1);
					Yii::app()->getModule('job')->setStatusJob($new,-1,$model->id);
		 			$this->redirect(array('view','id'=>$model->id));
			}
		}
			$this->render('index',array('model'=>$model));
		}else{
			$da ="Bạn chưa cập nhật trang cá nhân. Hãy cập nhật trang cá nhân của bạn 
				<a href='index.php?r=user/userprofiles'>Cập nhật trang cá nhân</a>";
 			$this->render('application.views.site.error',array('data'=>$da));
		}
		ob_flush();
		
 }



 public function actionDeposit($id)
 {
 	if (Yii::app()->request->isAjaxRequest){
 		$model = BidJob::model()->findByPk($id);
 		$returnUrl = 'http://'.Yii::app()->request->getServerName();
		$returnUrl .= CHtml::normalizeUrl(array('/baokim/success'));
		Bao_Kim::createBaoKim('tbl_job',$model->job->id,$returnUrl,$model->money);
 	}
 }

 public function actionContract($idbid)
 {
 	$model = BidJob::model()->findByPk($idbid);
 	if ($model->job->status == Yii::app()->getModule('job')->status_contract) {
 		$da ="Dự án này của bạn đã làm hợp đồng";
 		$this->render('application.views.site.error',array('data'=>$da));
 	}else{
 		$this->render('contract',array('data'=>$model));
 	}
 }

    public function actionMail($id)
    {
    	$bid = BidJob::model()->findByPk($id);
    	$title = "Bạn đã nhận được sự chấp nhận để tham gia dự án ".$bid->job->name;
    	$link =  Yii::app()->request->hostInfo.Yii::app()->controller->createUrl('/job/bid/accepted',array('id'=>$id,'ra'=>md5($bid->job->name) ));
    	$content ="Dear".$bid->user->name." </br> Bạn đã nhận được email để có thể tham gia dự án hãy
    	nhấn email để có thể tham gia dự án này</br>
    	<a href='$link'>Tham gia dự án</a>";
    	Yii::app()->getModule('job')->sendMail($title,$content,$bid->user->email);
    }
public function actionSave($id)
{
	Yii::app()->session['idbid'] = $id;
}
//bước đầu tiên ajax để chấp nhận người dùng tham gia dự án
public function actionAccept($id)
{
		if (Yii::app()->request->isAjaxRequest){
			$model = BidJob::model()->findByPk($id);
			$this->renderPartial('ajaxUpdateDivBib', array('data' => $model), false, true);
		}
}
//ajax bước chấp nhận một người tham gia dự án
public function actionBidAccepted($id,$ra)
{
	$data = BidJob::model()->findByPk($id);
	if ($data != null && $ra == md5($data->job->name) && $data->job->statuspost == Yii::app()->getModule('job')->satuspost_deposit && Yii::app()->request->isAjaxRequest){
		$data->job->status = Yii::app()->getModule('job')->status_addbid;
		$data->status = Yii::app()->getModule('job')->bidsattus_addjob;
		$data->save(false);
		$data->job->save();
		$title = "Bạn đã nhận được sự chấp nhận để tham gia dự án ".$data->job->name;
    	$link =  Yii::app()->request->hostInfo.Yii::app()->controller->createUrl('/job/bid/accepted',array('id'=>$id,'ra'=>md5($data->job->name) ));
    	$content ="Dear".$data->user->name." </br> Bạn đã nhận được email để có thể tham gia dự án hãy
    	nhấn email để có thể tham gia dự án này</br>
    	<a href='$link'>Tham gia dự án</a>";
    	Yii::app()->getModule('job')->sendMail($title,$content,$data->user->email);
		$this->renderPartial('updatedivbid', array('model'=>$data), false, true);
	}elseif (Yii::app()->request->isAjaxRequest && $data->job->statuspost!= 2) {
		$this->renderPartial('ajaxUpdateDivBib', array('data' => $data,'test'=>"ok"), false, true);
	}else{
		$da = "Bạn vào không đúng";
		$this->render('application.views.site.error',array('data'=>$da));
	}
}
//không đồng ý ở bước cuối cùng
public function actionNotBid($id,$ra)
{
	$data = BidJob::model()->findByPk($id);
	if ($data != null && $ra == md5($data->job->name) && Yii::app()->request->isAjaxRequest){
		$data->status = Yii::app()->getModule('job')->bidsattus_deposit;
			$data->save(false);
			$ten = $data->job->user->name;
            $str="$ten đã không đồng ý cho bạn tham gia dự án $data->job->name của bạn. Hãy lựa chọn dự án khác.";
			Yii::app()->getModule('job')->createInboxmessage($data->job_id,0,'Bạn nhận được một tin nhắn',$str);	
			$title = $data->user->name." không đồng ý cho bạn tham gia dự án ".$data->job->name;
	    	$content ="Dear ".$data->job->user->name." </br> Bạn ".$data->user->job->name." không đồng ý cho bạn tham gia dự án $data->job->name. Bạn hãy lựa chọn dự án khác để tham gia dự án này</br>";
	    	Yii::app()->getModule('job')->sendMail($title,$content,$data->user->email);
			UserLogs::saveLogsUser('tbl_job',$data->user_id,$id,10);
			$this->renderPartial('ajax_notbid', $data, false, true);
	}
}

//ajax bước cuối làm hợp đồng
public function actionBidEnd($id,$ra)
{
	$data = BidJob::model()->findByPk($id);
	if ($data != null && $ra == md5($data->job->name) && $data->job->statuspost == Yii::app()->getModule('job')->satuspost_deposit && Yii::app()->request->isAjaxRequest){
		$data->job->status =Yii::app()->getModule('job')->status_contract;
		$data->job->id_winner = $data->user->id;
		$data->job->save();
		$data->timecontract = time();
		$data->save(false);
		$data->status = Yii::app()->getModule('job')->bidsattus_starst;
		$title = "Hợp đồng đã của dự án đã  ".$data->job->name." hoàn thành";
		$linkuser =Yii::app()->request->hostInfo.Yii::app()->createUrl('user/userprofiles/view',array('id'=>$data->job->user->userProfile->id ));//user/userprofiles/view
    	$link =  Yii::app()->request->hostInfo.Yii::app()->controller->createUrl('/job/bid/accepted',array('id'=>$id,'ra'=>md5($data->job->name) ));
    	$content ="Dear".$data->user->name." </br> Hợp đồng giữa hai bên chính thức có hiệu lực. Chúc các bạn có dự án thành công.</br>
    	<a href='$linkuser'>Liên hệ với chủ dự án</a>";
    	Yii::app()->getModule('job')->sendMail($title,$content,$data->user->email);
		UserLogs::saveLogsUser('tbl_bidjob',$data->job->id,$id,2);
		$this->renderPartial('ajax_contract', $data, false, true);
	}elseif (Yii::app()->request->isAjaxRequest) {
		$this->renderPartial('ajax_bidend', array('data'=>$data,'test'=>1), false, true);
	}
}
//chuyển đến trang hợp đồng
 public function actionAccepted($id,$ra)
 {// dong y lam du an

 	$data = BidJob::model()->findByPk($id);
 	if ($data != null && $data->job->user_id == Yii::app()->user->id && $data->status == Yii::app()->getModule('job')->bidsattus_addjob && md5($data->job->name) == $ra){
 			$this->render('accepted',array('data'=>$data));
 	}else{
 			$da ="Bạn vào không đúng";
 			$this->render('application.views.site.error',array('data'=>$da));
 	}
 }
//kết thúc dự án
public function actionEndJob($id,$ra)
{
	$feedback = new Feedback;
	$data = BidJob::model()->findByPk($id);
 	if ($data != null && $data->job->user_id == Yii::app()->user->id && md5($data->job->name) == $ra){
 			$this->render('endjob',array('data'=>$data,'feedback'=>$feedback));
 	}else{
 			$da ="Bạn vào không đúng";
 			$this->render('application.views.site.error',array('data'=>$da));
 	}	
}

// link ajax kết thúc dự án
public function actionAjaxendjob($id,$ra)
{
	$data = BidJob::model()->findByPk($id);
 	if ($data != null && $data->job->user_id == Yii::app()->user->id && md5($data->job->name) == $ra){
 		$feedback = new Feedback;
 		if (isset($_POST["Feedback"])) {
 			$feedback->comment=$_POST["Feedback"]["comment"];
 			$feedback->rating =$_POST["Feedback"]["rating"];
 			$feedback->user_id_post = $data->job->user_id;
 			$feedback->user_id_bid = $data->user_id;
 			$feedback->job_id = $data->job_id;
 			$feedback->service_id = 0;
 			if ($feedback->save()) {
 				$data->user->rate =$_POST["Feedback"]["comment"]+$data->user->rate;
 				$data->user->save(false);
 				$data->job->status =Yii::app()->getModule('job')->status_endjob												;
		        $ten = $data->job->user->name;
		        $str="$ten kết thúc dự án  $job->name. Chúc bạn thành công trong các dự án tiếp theo";
				Yii::app()->getModule('job')->createInboxmessage($data->user_id,0,'Bạn nhận được một tin nhắn',$str);	
		 		if ($data->job->statuspost == 0) {
		 			$title = "Kết thúc dự án  ".$data->job->name;
					$linkuser =Yii::app()->request->hostInfo.Yii::app()->createUrl('user/userprofiles/view',array('id'=>$data->job->user->userProfile->id ));//user/userprofiles/view
			    	$link =  Yii::app()->request->hostInfo.Yii::app()->controller->createUrl('/job/bid/accepted',array('id'=>$id,'ra'=>md5($data->job->name) ));
			    	$content ="Dear".$data->user->name." </br>".$data->job->user->name." đã kết thúc dự án. ".$data->job->user->name." sẽ chuyển tiền cho bạn theo đúng hợp đồng. Nếu không bạn không nhận được số tiền hãy liên hệ với chúng tôi.</br>
			    	<a href='$linkuser'>Liên hệ với chủ dự án</a>";
		 		}else{
		 			$title = "Kết thúc dự án  ".$data->job->name;
					$linkuser =Yii::app()->request->hostInfo.Yii::app()->createUrl('user/userprofiles/view',array('id'=>$data->job->user->userProfile->id ));//user/userprofiles/view
			    	$link =  Yii::app()->request->hostInfo.Yii::app()->controller->createUrl('/job/bid/accepted',array('id'=>$id,'ra'=>md5($data->job->name) ));
			    	$content ="Dear".$data->user->name." </br>".$data->job->user->name." đã kết thúc dự án. </br> Chúng tôi sẽ gửi toàn bộ số tiền cho bạn trong thời gian sớm nhất.";
		 		}
		    	Yii::app()->getModule('job')->sendMail($title,$content,$data->user->email);
				UserLogs::saveLogsUser('tbl_bidjob',$data->job->id,$id,15);
				$this->renderPartial('ajax_endjob', $data, false, true);
		 			}
		 		}
 	}else{
 			$da ="Bạn vào không đúng";
 			$this->render('application.views.site.error',array('data'=>$da));
 	}		
}


public function actionAjaxSkill(){//su dung ajax cho du lieu bang skill
		if(Yii::app()->request->isAjaxRequest){
				$data=Skill::model()->findAll('subjobtype_id=:subjobtype_id',
										 array(':subjobtype_id'=>(int) $_POST['subjobtype_id']));
				if ($data != null) {
					echo "<h2>Những khả năng có thể làm dự án này</h2>";
				}
				foreach($data as $value)
					{
						echo "<label class='checkbox'>
										<input type='checkbox' class='cb_skill' name='job_checkbox[]' value = '".$value->id."'>".$value->name."</label>";
					}
		}
}
		public function actionAjaxDropDown(){
			if(Yii::app()->request->isAjaxRequest){
				$data=SubJobtype::model()->findAll('jobtype_id=:jobtype_id',
									array(':jobtype_id'=>(int) $_POST['jobtype_id']));

				$data=CHtml::listData($data,'id','name');
				foreach($data as $value=>$name)
				{
								echo CHtml::tag('option',
													 array('value'=>$value),CHtml::encode($name),true);
				}
			}
		 }
		 public function actionAjaxCurrency(){
		 	if(Yii::app()->request->isAjaxRequest){
				$data=Budget::model()->findAll('currency_id=:currency',
									array(':currency'=>(int) $_POST['currency']));
				$str ="";
				foreach ($data as $key => $value) {
						$str1 = $value->details."($value->minmoney - $value->maxmoney)";
						$str .= "<option value='$value->id'>$str1</option>";
				}
				echo "$str";
			}
		 }
		 protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='job-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}


}